MYSQL de DISTINCT operator
SELECT DISTINCT
statement wordt gebruikt om alleen de onderscheiden waarden te tonen.Probleem
In het geval dezelfde waarde in een kolom op verschillende rijenvoorkomt, willen we die waarde slechts één keer tonen.
Oplossing
Soms staan er dubbele waarden in een kolom. Het is normaal dat een tabel met personen dezelfde familienamen of voornamen kan bevatten. dus Dat is geen probleem. Maar soms wil je alleen het aantal verschillende (distinct/onderscheiden) waarden kennen. Het DISTINCT
sleutelwoord kan je gebruiken om alleen onderscheiden of verschillende waarden te retourneren. Het opnemen van DISTINCT
achter SELECT
zorgt ervoor dat de dubbele uitkomsten worden weggelaten.
SELECT DISTINCT column_name(s) FROM table_name -- KVV -- 11 december 2012 -- Dit heeft te maken met het Distinct Statement -- Hierdoor ziet men elke naam maar 1 keer -- Als men enkel Select zou gebruiken zou hij -- namen als Beth 2x laten zien omdat deze 2x -- in de lijst staan. -- use A88586KyleVanVelthoven; select distinct Familienaam from Boeken; -- hier zal de naam Beth twee keer getoond worden select Familienaam from Boeken;
Met de distinct
clausule selecteer je geen dubbele rijen. Wat zijn dubbele rijen? Dat hang er van af welke kolommen je selecteert. Als ik alleen de Familienaam kolom selecteer, heb ik twee rijen met Beth:
select Familienaam from Boeken order by Familienaam;
Door de distinct
clausule toe te voegen wordt er slechts één rij met Beth getoond:
select distinct Familienaam from Boeken order by Familienaam;
Als ik in mijn select opdracht ook de Titel kolom opneem heb ik geen twee gelijke rijen meer.
En zal het toevoegen van de distinct clausule geen verschil maken.
Opdracht
- Ik wil alle voornamen en namen van de schrijvers en geen dubbele. Voornaam en familienaam moeten verschillend zijn. De lijst staat in alfabetische volgorde, eerst Familienaam en dan Voornaam.
Als jeORDER BY
gebruikt moeten de kolommen in de order by clausule ook worden opgenomen na de DISTINCT clausule. - k wil alle voornamen en namen van de schrijvers en geen dubbele die de letter a en/of e in hun familienaam hebben staan. De lijst staat in alfabetische volgorde, eerst Familienaam en dan Voornaam.
- Sla de scripts op in BoekenSelectDisctinctVoornaamFamilienaam.sql
- Tip:
Als alle kolommen in alle rijen verschillend moeten zijn, kan je de ster gebruiken na dedistinct
clausule:
select distinct * from Boeken order by Titel